﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Windows.Forms;
using GazelDoor.Model;


namespace GazelDoor.Controlli
{
    class ctrlStoricoEntrate
    {
        GazelConnessione con = GazelConnessione.Istance();

        public void Inserisci(StoricoEntrata storicoEntrata)
        {
            string query = "insert into StoricoEntrate values (@id, @dataentrata, @successo, @idtessera)";
            try
            {
                SqlCommand inserisci = new SqlCommand(query, con.Connessione);
                SqlParameter id = new SqlParameter();
                id.ParameterName = "@id";
                id.SqlDbType = SqlDbType.UniqueIdentifier;
                id.Value = storicoEntrata.Id;
                inserisci.Parameters.Add(id);

                SqlParameter dataentrata = new SqlParameter();
                dataentrata.ParameterName = "@dataentrata";
                dataentrata.SqlDbType = SqlDbType.DateTime;
                dataentrata.Value = storicoEntrata.DataEntrata;
                inserisci.Parameters.Add(dataentrata);

                SqlParameter successo = new SqlParameter();
                successo.ParameterName = "@successo";
                successo.SqlDbType = SqlDbType.Bit;
                successo.Value = storicoEntrata.Successo;
                inserisci.Parameters.Add(successo);
                
                SqlParameter idtessera = new SqlParameter();
                idtessera.ParameterName = "@idtessera";
                idtessera.SqlDbType = SqlDbType.UniqueIdentifier;
                idtessera.Value = storicoEntrata.Tessera.Id;
                inserisci.Parameters.Add(idtessera);

                inserisci.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
                MessageBox.Show("Errore nel Controllo dell'Inserimento" + ex.Message);
            }
        }

        public List<StoricoEntrata> SelectAll()
        {
            List<StoricoEntrata> lista = new List<StoricoEntrata>();
            foreach (DataRow riga in SelectTableAll().Rows)
            {
                StoricoEntrata sto=new StoricoEntrata();
                sto.Id =(Guid)riga[0];
                sto.DataEntrata = (DateTime)riga[1];
                sto.Successo = Convert.ToBoolean(riga[2]);
                sto.Tessera.Id = (Guid)riga[3];
                lista.Add(sto);
            }
            return lista;
        }

        public DataTable SelectTableAll()
        {
            DataTable dati = new DataTable();
            
            Controlli.GazelConnessione con = Controlli.GazelConnessione.Istance();
            SqlConnection conn = con.Connessione;

            SqlDataAdapter adapter = new SqlDataAdapter("SELECT Persone.cognome, Persone.nome, StoricoEntrate.dataentrata, StoricoEntrate.successo FROM Persone INNER JOIN Tessere ON Persone.idtessera = Tessere.id INNER JOIN StoricoEntrate ON Tessere.id = StoricoEntrate.idtessera", conn);
//            SqlDataAdapter adapter = new SqlDataAdapter(@"
//SELECT     Persone.cognome, Persone.nome, StoricoEntrate.dataentrata, StoricoEntrate.successo
//FROM       Persone INNER JOIN Tessere ON Persone.idtessera = Tessere.id 
//            INNER JOIN StoricoEntrate ON Tessere.id = StoricoEntrate.idtessera", conn);

            adapter.Fill(dati);
            return dati;
        }
    }
}

